/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controle;

import java.util.ArrayList;
import java.util.List;
import java.util.logging.Level;
import java.util.logging.Logger;
import modelo.Disciplina;
import modelo.Topico;
import modelo.dao.DAOFactory;
import modelo.dao.IDisciplinaDAO;
import modelo.dao.PostgresDisciplinaDAO;
import view.Validator;

/**
 *
 * @author Cinthia
 */
public class DisciplinaController {


    public static void cadastrar(String pNmDisciplina, String pCodDisciplina, Object[] pNmtopicos, Integer pIdDisciplina) throws Exception {

        List<Topico> topicos = new ArrayList();        
        for(Object item : pNmtopicos){
            Topico topico = new Topico();
            topico.setNmTopico(item.toString());
            topicos.add(topico);
        }        
        
        Disciplina disciplina = new Disciplina();
        disciplina.setNomeDisciplina(pNmDisciplina);
        disciplina.setCodDisciplina(pCodDisciplina);        
        disciplina.setTopicos(topicos);

        IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();
        
        if(pIdDisciplina == null){
            disciplinaDAO.criar(disciplina);
        }
        else{ 
            disciplina.setIdDisciplina(pIdDisciplina);
            disciplinaDAO.alterar(disciplina);
        }
    }
    
    public static void excluir(Integer pIdDisciplina) throws Exception{
        
       IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();
       
       Disciplina disciplina = new Disciplina();
       disciplina.setIdDisciplina(pIdDisciplina);
       
       disciplinaDAO.excluir(disciplina);        
    }
    
    public static Disciplina consultar(String nomeDisciplina) throws Exception {

        IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();
        Disciplina disciplina = new Disciplina();

        disciplina = disciplinaDAO.consultar(nomeDisciplina);

        if (disciplina == null) {
            throw new Exception(Validator.MSG_DISCIPLINA_NÃO_ENCONTRADA);
        } else {
            return disciplina;
        }
    }

    public static List<Disciplina> listar(){
        
        IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();       
        try {
            return disciplinaDAO.listar();
        } catch (Exception ex) {
            Logger.getLogger(DisciplinaController.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }
        
    public static List<Topico> listarTopicos(Disciplina disciplina){
        
        IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();      
        try {
            return disciplinaDAO.listarTopicos(disciplina);
        } catch (Exception ex) {
            Logger.getLogger(DisciplinaController.class.getName()).log(Level.SEVERE, null, ex);
            return null;
        }
    }

    public static Topico recuperarTopico(Disciplina pDisciplina, String pNmTopico) throws Exception{        
        IDisciplinaDAO disciplinaDAO = DAOFactory.getInstance().getDisciplinaDAO();        
        return disciplinaDAO.recuperarTopico(pDisciplina, pNmTopico);        
    }
    
}
